<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>无缝轮播图</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            list-style: none;
        }
        
        @font-face {
            font-family: 'icomoon';
            src: url('fonts/icomoon.eot?gccjfb');
            src: url('fonts/icomoon.eot?gccjfb#iefix') format('embedded-opentype'), url('fonts/icomoon.ttf?gccjfb') format('truetype'), url('fonts/icomoon.woff?gccjfb') format('woff'), url('fonts/icomoon.svg?gccjfb#icomoon') format('svg');
            font-weight: normal;
            font-style: normal;
            font-display: block;
        }
        
        .banner {
            width: 520px;
            height: 280px;
            overflow: hidden;
            position: absolute;
            left: 50%;
            top: 50%;
            margin: -200px 0 0 -260px;
        }
        
        .banner ul {
            margin: 0;
            padding: 0;
            list-style: none;
        }
        
        .hot {
            position: absolute;
            top: 0;
            left: 0;
        }
        
        .hot li {
            float: left;
        }
        
        .dot {
            position: absolute;
            bottom: 10px;
            width: 100%;
            text-align: center;
            font-size: 0;
        }
        
        .dot li {
            display: block;
            display: inline-block;
            margin: 0 5px;
            width: 15px;
            height: 15px;
            border-radius: 100%;
            background-color: white;
            cursor: pointer;
        }
        
        .dot .on {
            background-color: red;
        }
        
        .arrow span {
            width: 20px;
            height: 30px;
            line-height: 30px;
            color: white;
            top: 50%;
            position: absolute;
            background-color: #000;
            opacity: 0.3;
            cursor: pointer;
            text-align: center;
            font-size: 20px;
            transform: translateY(-50%);
        }
        
        .arrow .prev {
            font-family: 'icomoon';
            left: 0px;
            border-bottom-right-radius: 15px;
            border-top-right-radius: 15px;
        }
        
        .arrow .next {
            font-family: 'icomoon';
            right: 0px;
            border-bottom-left-radius: 15px;
            border-top-left-radius: 15px;
        }
    </style>
</head>

<body>
    <div class="banner">
        <ul class="hot">
            <!--轮播图片-->
            <li>
                <img src="./images/TB01.jpg">
            </li>
            <li>
                <img src="./images/TB02.jpg">
            </li>
            <li>
                <img src="./images/TB03.jpg">
            </li>
            <li>
                <img src="./images/TB04.jpg">
            </li>
            <li>
                <img src="./images/TB05.jpg">
            </li>
        </ul>
        <!--小圆点-->
        <ul class="dot">
            <li class="on"></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
        <!-- 左右翻页箭头-->
        <div class="arrow">
            <span class="prev"></span>
            <span class="next"></span>
        </div>
    </div>
    <script src="./jquery-3.2.1.min.js"></script>
    <script>
        $(function() {
            var i = 0; // 当前显示的图片索引
            var timer = null; // 定时器
            var delay = 2500; // 图片自动切换的间隔时间
            var width = 520; // 每张图片的宽度
            var speed = 200; // 动画时间
            // 复制列表中的第一个图片，追加到列表最后，设置ul的宽度为图片张数 * 图片宽度
            var firstimg = $('.hot li').first().clone();
            $('.hot').append(firstimg).width($('.hot li').length * width);
            // 1. 设置周期计时器，实现图片自动切换
            timer = setInterval(imgChange, delay);
            // 2. 鼠标移入，暂停自动播放，移出，开始自动播放
            $('.banner').hover(function() {
                clearInterval(timer);
            }, function() {
                timer = setInterval(imgChange, delay);
            });
            // 3. 鼠标划入圆点
            $('.dot li').mouseover(function() {
                i = $(this).index();
                $('.hot').stop().animate({
                    left: -i * width
                }, 200);
                dotChange();
            });
            // 4. 设置左右切换的箭头显示和隐藏
            $('.banner').hover(function() {
                $('.arrow').show();
            }, function() {
                $('.arrow').hide();
            });
            // 5. 向右箭头
            $('.next').click(function() {
                imgChange()
            });
            // 6. 向左箭头
            $('.prev').click(function() {
                --i;
                if (i == -1) {
                    i = $('.hot li').length - 2;
                    $('.hot').css({
                        left: -($('.hot li').length - 1) * width
                    });
                }
                $('.hot').stop().animate({
                    left: -i * width
                }, speed);
                dotChange();
            });
            // 自动切换图片
            function imgChange() {
                ++i;
                isCrack();
                dotChange();
            }
            // 无缝轮播
            function isCrack() {
                if (i == $('.hot li').length) {
                    i = 1;
                    $('.hot').css({
                        left: 0
                    });
                }
                $('.hot').stop().animate({
                    left: -i * width
                }, speed);
            }
            // 自动切换对应的圆点
            function dotChange() {
                if (i == $('.hot li').length - 1) {
                    $('.dot li').eq(0).addClass('on').siblings().removeClass('on');
                } else {
                    $('.dot li').eq(i).addClass('on').siblings().removeClass('on');
                }
            }
        });
    </script>
</body>

</html>